/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.dao;

import lib.*;
import model.dao.vo.*;

import java.sql.*;
import java.util.*;

/**
 *
 * @author felipe
 */
public class UsuarioDAO extends DAO {

    public UsuarioDAO()
    {
        super();
    }

    public UsuarioVO buscaUsuario(UsuarioVO usuario)
    {
        SQL sql = Factory.createSQL();
        sql = sql.select("usuario_id, usuario_apelido, usuario_senha, usuario_nome, usuario_nascimento, usuario_sexo, usuario_ativo")
                .from("usuario")
                .where("usuario_id = " + usuario.getId());
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                usuario.setId(rs.getInt("usuario_id"));
                usuario.setApelido(rs.getString("usuario_apelido"));
                usuario.setSenha(rs.getString("usuario_senha"));
                usuario.setNome(rs.getString("usuario_nome"));
                usuario.setNascimento(rs.getDate("usuario_nascimento"));
                usuario.setSexo(rs.getString("usuario_sexo"));
                usuario.setAtivo(rs.getBoolean("usuario_ativo"));
                return usuario;
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error buscaPedido method " , e);
        }
        return null;
    }

    public Iterator<UsuarioVO> listaUsuario(UsuarioVO usuario)
    {
        SQL sql = Factory.createSQL();
        sql = sql.select("usuario_id, usuario_nome, ")
                .from("usuario")
                .where("usuario_id = " + usuario.getId());
        ResultSet rs = this.db.Execute(sql.toString());
        try
        {
            if ( ! rs.wasNull() )
            {
                List<UsuarioVO> usuarios = new ArrayList<UsuarioVO>();
                while(rs.next())
                {
                    UsuarioVO u = new UsuarioVO();
                    u.setId(rs.getInt("usuario_id"));
                    u.setApelido(rs.getString("usuario_apelido"));
                    u.setSenha(rs.getString("usuario_senha"));
                    u.setNome(rs.getString("usuario_nome"));
                    u.setNascimento(rs.getDate("usuario_nascimento"));
                    u.setSexo(rs.getString("usuario_sexo"));
                    u.setAtivo(rs.getBoolean("usuario_ativo"));
                    usuarios.add(u);
                }
                if ( ! usuarios.isEmpty()){
                    return (Iterator<UsuarioVO>) usuarios.iterator();
                }
            }
        }
        catch( SQLException e )
        {
            ErrorLog.SQLLog("Error Main method " , e);
        }
        return null;
    }

    public boolean inserePedido(UsuarioVO usuario)
    {
        SQL sql = Factory.createSQL();
        sql = sql.insert()
                .into("usuario", "usuario_id, usuario_apelido, usuario_senha, usuario_nome, usuario_nascimento, usuario_sexo, usuario_ativo")
                .value("NULL, " + usuario.getApelido() + ", " + usuario.getSenha() + ", " + usuario.getNome() + ", " + usuario.getNascimento().toString() + ", " + usuario.getSexo() + ", " + usuario.getAtivo());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1){
            return true;
        }
        return false;
    }

    public boolean alteraPedido(UsuarioVO usuario)
    {
        SQL sql = Factory.createSQL();
        sql = sql.update("usuario")
                .set("usuario_apelido = " + usuario.getApelido())
                .nset("usuario_senha = " + usuario.getSenha())
                .nset("usuario_nome = " + usuario.getNome())
                .nset("usuario_nascimento = " + usuario.getNascimento().toString())
                .nset("usuario_sexo = " + usuario.getSexo())
                .nset("usuario_ativo = " + usuario.getAtivo())
                .where("usuario_id = " + usuario.getId());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1){
            return true;
        }
        return false;
    }

    public boolean apagaPedido(UsuarioVO usuario)
    {
        SQL sql = Factory.createSQL();
        sql = sql.delete("usuario")
                .where("usuario_id = " + usuario.getId());
        int sucess = this.db.Update(sql.toString());
        if (sucess == 1){
            return true;
        }
        return false;
    }

}
